-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feat: 마이리스트, 콜라보리스트 페이지 구현 #10
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오매낫 husky 때문에 충돌이..🥲
소현님 항상 느끼는 것 같지만 코드 진짜 깔끔하게 잘 쓰시는 것 같습니당!! 👍
LGTM!
@@ -0,0 +1,56 @@ | |||
'use client'; | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
머지되면 바로 floating 버튼 줍줍 예정입니다 ><
return ( | ||
<div | ||
className={styles.arrowUpButton} | ||
onClick={handleScrollToTop} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assignInlinVars를 요렇게 쓰는 것이었군요..🫢 배워갑니당!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
진짜 소현님... 이번 코드리뷰 시간 저의 학습시간이었습니다!
진짜 코드 너무 깔끔해서 쫙쫙 읽히고,
꼼꼼하고 간결한 코드가 너무 좋습니다🥹👍
style={assignInlineVars({ | ||
[styles.imageUrl]: `url(${user.backgroundImageUrl})`, | ||
})} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dynamic 스타일링 이렇게 하는 거군요...!
덕분에 훨씬 쉽게 이해할 수 있었어요! 감사합니다🙇♀️
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
와 저도 감사합니다!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
제가 바닐라익스트랙 다이나믹을 아직 잘 모르지만,
소현님께서 다른 곳 다이나믹 스타일링 적용하실때에는
className={`${styles.button} ${kind.korNameValue === selected ? styles.variant : ''}`}
이런식으로 적용해주셨던 것 같아서,
여기서는 assignInlineVars을 사용해야하셨던 이유가 있으신지 궁금해요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
넵 유진님~! assignInlineVars를 적용한 부분은 리스폰스로 데이터를 받아서 스타일 값으로 적용해야 할 때 사용하였습니다. (배경 백그라운드 및 리스트 배경 컬러) 반면에 기존 스타일에서 조건에 따른 스타일을 추가로 적용해야 할때는 className에 변화를 주는 방법을 사용했습니다~! (+. 이 부분도 바닐라익스트랙에 Sprinkles를 이용하고 싶었는데 어려웠습니다🥹)
</div> | ||
<div className={styles.profileContainer}> | ||
<div className={styles.profile}> | ||
<img src={user.profileImageUrl} className={styles.avatar} alt="아바타" /> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
next/Image가 아닌 img 태그를 쓰신 이유 저도 궁금합니다!
혹시 이유가 있으셨나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
특별한 이유는 없고, next/Image 사용을 깜빡했습니다 ㅎㅎ 확인 해 주셔서 감사합니다.🥹
해당 프로필은 next/Image 컴포넌트를 사용하는 것으로 수정하겠습니다~! (+. alt도 함께 수정)
<Link href={`/${user.nickname}/mylist`} className={styles.link}> | ||
<button className={`${styles.leftButton} ${type === 'my' ? styles.variant : ''}`}>마이 리스트</button> | ||
</Link> | ||
<Link href={`/${user.nickname}/collabolist`} className={styles.link}> | ||
<button className={`${styles.rightButton} ${type === 'collabo' ? styles.variant : ''}`}>콜라보 리스트</button> | ||
</Link> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
옵셔널한 경우에는 이렇게 클래스명 2개 사용해서 스타일링을 할 수 있겠군요...
배워갑니다!! (제 코드 수정하러 갑니다🏃♀️)
useEffect(() => { | ||
window.addEventListener('scroll', visibleButton); | ||
|
||
return () => { | ||
window.removeEventListener('scroll', visibleButton); | ||
}; | ||
}, []); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
추후 탐색페이지에서는 스크롤 이벤트가 많이 발생하다보니,
성능 개선을 위해 쓰로틀링을 추가해도 좋을 것 같다는 생각이 듭니다!
소현님 의견은 어떠실까요??
현재 마이페이지 기준 테스트를 해보니, 12-13회 정도 발생했던 것이 4회정도로 줄어드는 것 같습니다.(쓰로틀링 0.3초로 설정시)
- (제가 아는 방식은) lodash 라이브러리 설치
yarn add lodash
yarn add --dev @types/lodash
- 적용
import throttle from 'lodash/throttle';
//...
window.addEventListener('scroll', throttle(visibleButton, 300));
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
쓰로틀링이 이럴 때 쓰이는 거였군요! 👍👍 서영님 덕분에 배워갑니다 ㅎㅎ
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@seoyoung-min
서영님 피드백 바탕으로 쓰로틀링을 커스텀 훅으로 구현해서 수정해 보았는데 시간 나실때 확인 한번 부탁드려도 될까요?! 🥹
<div | ||
className={styles.arrowUpButton} | ||
onClick={handleScrollToTop} | ||
style={assignInlineVars({ | ||
[styles.opacitySize]: isVisible ? '1' : '0', | ||
[styles.cursor]: isVisible ? 'pointer' : 'default', | ||
})} | ||
> | ||
<ArrowUpIcon alt="상단으로 이동하기 버튼" className={styles.icon} /> | ||
</div> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아침 데일리스크럼 때 제안드린 부분 구현 방식을 고민해봤습니다!
<div | |
className={styles.arrowUpButton} | |
onClick={handleScrollToTop} | |
style={assignInlineVars({ | |
[styles.opacitySize]: isVisible ? '1' : '0', | |
[styles.cursor]: isVisible ? 'pointer' : 'default', | |
})} | |
> | |
<ArrowUpIcon alt="상단으로 이동하기 버튼" className={styles.icon} /> | |
</div> | |
//아예 없애고 노출시키는 방향 | |
<> | |
{isVisible && ( | |
<div className={styles.arrowUpButton} onClick={handleScrollToTop}> | |
<ArrowUpIcon alt="상단으로 이동하기 버튼" className={styles.icon} /> | |
</div> | |
)} | |
</> |
//CSS는 transition 대신 애니메이션으로
const fadeIn = keyframes({
'0%': { opacity: 0 },
'100%': { opacity: 1 },
});
export const arrowUpButton = style([
addButton,
{
animation: `${fadeIn} 300ms ease`,
},
]);
@Nahyun-Kang |
@seoyoung-min |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
넘 고생많으셨습니다 감사합니다!! 👍
next.config.js
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
와앙 웹팩 설정 해보다가 안되서 포기했는데 좋은 예시 주셔서 감사합니다! 👍
style={assignInlineVars({ | ||
[styles.imageUrl]: `url(${user.backgroundImageUrl})`, | ||
})} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
제가 바닐라익스트랙 다이나믹을 아직 잘 모르지만,
소현님께서 다른 곳 다이나믹 스타일링 적용하실때에는
className={`${styles.button} ${kind.korNameValue === selected ? styles.variant : ''}`}
이런식으로 적용해주셨던 것 같아서,
여기서는 assignInlineVars을 사용해야하셨던 이유가 있으신지 궁금해요!
소현님 수정해주신 부분도 확인했습니다!! 직접 쓰로틀 커스텀 훅 구현까지...👍 |
개요
작업 사항
참고 사항 (optional)
스크린샷
리뷰어에게